package rootPackage.service;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.slim3.datastore.Datastore;
import org.slim3.util.BeanUtil;

import rootPackage.meta.ProdottiMeta;
import rootPackage.model.Prodotti; 
import rootPackage.model.ProdottiRicette;
import rootPackage.model.Ricette;


import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.Transaction;


public class ProdottiService {

    private ProdottiMeta p = ProdottiMeta.get();

    public Prodotti get(Key key) {
        return Datastore.get(p, key);
    }

    public List<Prodotti> getAll() {
        return Datastore.query(p).asList();
    }

    public void inserisci(Map<String, Object> input) {
        Prodotti prodotti = new Prodotti();
        BeanUtil.copy(input, prodotti);
        Transaction tx = Datastore.beginTransaction();
        Datastore.put(tx, prodotti);
        tx.commit();
     }

    public Prodotti update(Key key, Long version, Map<String, Object> input) {
        Transaction tx = Datastore.beginTransaction();
        Prodotti prodotti = Datastore.get(tx, p, key, version);
        BeanUtil.copy(input, prodotti);
        Datastore.put(tx, prodotti);
        tx.commit();
        return prodotti;
    }

    public void delete(Key key) {
        Transaction tx = Datastore.beginTransaction();
        Prodotti prodotti = Datastore.get(tx, p, key);
        Datastore.delete(tx, prodotti.getKey());
        tx.commit();
        
    }

    public List<Ricette> getRicetta(Prodotti prodotto){
        List<Ricette> list = new ArrayList<Ricette>();
        for (ProdottiRicette po : prodotto.getProdottiRicetta().getModelList()) {
            list.add(po.getIngredienti().getModel());
        }
        return list;
    }
}